/**
 * 
 * 给你一个字符串 s，找到 s 中最长的 回文 子串。
 * 1 <= s.length <= 1000
 * s 仅由数字和英文字母组成
 * 
 */


class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size();
        int ans_left = 0,ans_right = 0;
        for(int i = 0;i < 2 * n - 1;i++){
            int l = i / 2,r = (i + 1) / 2;
            while(l >= 0 && r < n && s[l] == s[r]){
                l--;
                r++;
            }
            if(r - l - 1 > ans_right - ans_left){
                //left open and right close
                ans_left = l + 1;
                ans_right = r;
            }
        }
        return s.substr(ans_left,ans_right - ans_left);
    }
};